import { post } from "@/utils/http";

// API 常量
export const Api = {
  BannerPage: "/banner/page",
  BannerAdd: "/banner",
  BannerUpdate: "/banner/:id",
  BannerEnable: "/banner/:id/enable",
  BannerDisable: "/banner/:id/disable",
} as const;

// 物品搜索请求参数类型
export interface BannerSearchReq {
  id?: string;
  pageNo?: number;
  pageSize?: number;
  category?: string;
  enable?: boolean;
}

// 物品分页响应数据类型
export interface BannerPageResponse {
  hasNextPage: boolean;
  list: BannerInfo[];
  nextPage: number;
  count: number;
  total: number;
  size: number;
}

// 物品信息数据类型
export interface BannerInfo {
  id?: string;
  createUser?: string; // 创建者
  createTime?: Date; // 创建时间
  modifyUser?: string; // 修改人
  modifyTime?: Date; // 更新时间
  type?: number; // banner类型，0: h5 url, 1: app内页面

  url?: string; // 跳转链接，h5url 'https://www.baidu.com' 或者 端内页面 '/myWallet'
  subType?: number; // 子类型，当type为0的时候,需要区分 0: 端内webview 打开, 1:外部浏览器打开
  title?: string; // 标题
  imageUrl?: string; // 图片链接
  arImageUrl?: string; // 阿拉伯语图片链接
  params?: Record<string, string>; // 参数配置，参数, 如有, 如果 type 为 0 时, 直接拼接在 url 后面,不使用该参数; 如果 type 为 1 时, 需要{'key':"value"}
  enable?: boolean; // 是否启用
  startTime?: Date; // 开始时间
  endTime?: Date; // 结束时间
}

// 获取banner分页列表
export function getBannerPageApi(params: BannerSearchReq): Promise<{
  code: number;
  data: BannerPageResponse;
  message?: string;
}> {
  return post(Api.BannerPage, params);
}
// 创建banner
export function createBannerApi(params: BannerSearchReq): Promise<{
  code: number;
  data: BannerPageResponse;
  message?: string;
}> {
  return post(Api.BannerAdd, params);
}
// 更新banner
export function updateBannerApi(params: BannerSearchReq): Promise<{
  code: number;
  data: BannerPageResponse;
  message?: string;
}> {
  return post(Api.BannerUpdate.replace(":id", params.id), params);
}
// 启用banner
export function enbaleBannerApi(id: string): Promise<{
  code: number;
  data: BannerPageResponse;
  message?: string;
}> {
  return post(Api.BannerEnable.replace(":id", id));
}
// 启用banner
export function disaleBannerApi(id: string): Promise<{
  code: number;
  data: BannerPageResponse;
  message?: string;
}> {
  return post(Api.BannerDisable.replace(":id", id));

}
